home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 1 / Gekikoh Dennoh Club Vol. 1 (Japan).7z / Gekikoh Dennoh Club Vol. 1 (Japan) (Track 1).bin / kowin / archive / sys / kowin14d.lzh / doc / programming / kowin_p9.doc < prev    next >
Text File  |  1995-12-02  |  4KB  |  121 lines

  1.  
  2. Ko-Window プログラミングと C言語ライブラリの関係
  3.  
  4.  
  5.   Ko-Window のプログラミングには C言語のライブラリが必要不可欠となります。し
  6. かしウィンドウという性質から、使用できる関数とできない関数が存在します。
  7.  
  8.  
  9.  
  10. ●入出力
  11.  
  12.   ウィンドウプログラムにおける入出力は、基本的にウィンドウサーバーを通さなけ
  13. ればなりません。
  14.  
  15. ・画面への表示出力
  16.     すべてサーバーの描画機能を使用して下さい。標準出力への出力関数など、
  17.     ウィンドウを通さない出力関数は使用してはいけません。
  18.  
  19. ・キー入力やマウス入力
  20.     サーバーからのイベント入力を使用します。標準入力から読み取る関数など、
  21.     ウィンドウを通さない入力は使用してはいけません。
  22.  
  23. ・ファイル入出力 <MT>
  24.     C言語ライブラリがそのまま使用できます。ただし、高レベルのファイル操
  25.     作関数では内部で malloc()/free() を使用するため、ヒープ領域の設定が
  26.     必要になります。
  27.     ファイル名の管理は常にフルパスで行うようにして下さい。(もしくは各ア
  28.     プリケーションが起動時のカレントディレクトリを保存する) Ko-Window の
  29.     ようなマルチタスク環境では、カレントディレクトリはいつでも変更されて
  30.     しまう可能性があり、一定ではないからです。(Human68k はカレントディレ
  31.     クトリを OS 内部管理し、かつ1つしか持たないため)
  32.     もしフルパスで保存していなければ、テキストエディタを起動しても途中で
  33.     カレントディレクトリが変わってしまい、セーブしたら別の場所に書き込ん
  34.     でしまった、なんてことが起こります。そのファイルのフルパスを得る関数
  35.     として PathGetFullName() が用意されているのでぜひ使用して下さい。
  36.  
  37. ・その他デバイス
  38.     ジョイスティック、音楽関係、RS-232C、などは、特にサーバーが管理して
  39.     いないのでC言語レベルでそのまま使用することになります。
  40.  
  41.  
  42.  
  43. ●メモリ管理 <MT>
  44.  
  45.   メモリの確保と開放は、C言語ライブラリがそのまま使用できます。malloc/free で
  46. す。ただしあらかじめヒープ領域サイズを与えておかなければなりません。この制限
  47. は最近軽減され、mm_alloc ライブラリ(mm_klib.a)を使用すれば自己拡張して動的な
  48. 消費メモリの変化について行けるようになりました。
  49.  
  50.   ヒープ領域の管理はサーバーが行います。C言語のヒープメモリサイズを変更する
  51. ような関数(sbrk()等)は使用してはいけません。
  52.  
  53.  
  54.  
  55. ●シグナル
  56.  
  57.   C言語のシグナル関数 signal() 系は使用できません。Ko-Window の場合、元々イ
  58. ベントというシグナルによって駆動されているので、根本的にプログラミングスタイ
  59. ルが異なっているからです。
  60.  
  61.  
  62.  
  63. ●大域ジャンプ
  64.  
  65.   setjmp(), longjmp() を使った大域ジャンプは、保存したスタックフレームが固定
  66. でない可能性があるため使用できません。
  67.  
  68.  
  69.  
  70. ●プロセスの起動 <MT>
  71.  
  72.   exec() 系のプロセス起動関数は使用できません。Ko-Window の場合は、プログラ
  73. ムの起動はすべて WindowLoadExec() を通す必要があります。
  74.  
  75.  
  76.  
  77. ●環境変数 <MT>
  78.  
  79.   Ko-Window の各アプリケーションは環境領域のコピーを持っていません。よって、
  80. 自分のプロセス内部の環境変数(Cライブラリ内部の変数)をアクセスしようとする関数
  81.  getenv()/setenv() を使用してはいけません。
  82.  
  83.   代わりに KoWindowGetEvn() (親プロセスの変数を参照する) を用いるか、DOS CALL
  84. でそのまま親の環境を利用するか、自分でコピーを作ったのちアクセスするようにし
  85. て下さい。
  86.  
  87.  
  88.  
  89. ● DOS CALL / IOCS CALL <MT>
  90.  
  91.   サーバーの管理しているデバイス以外を扱う場合は、これらを直接使用することに
  92. なります。ただし、サーバーの管理と衝突するようなものは当然使用できません。も
  93. しどれが使えてどれが使えないのか判断がつかない時は、無理に使用しないのが無難
  94. です。
  95.  
  96.  
  97.  
  98. ●その他
  99.  
  100.   文字列操作、数値演算など、システムと無関係なライブラリ関数はもちろん使用し
  101. て構いません。
  102.  
  103.  
  104.  
  105. ● MiniTERM (mtmlib) について
  106.  
  107.   MiniTERM(mtmlib) は、C言語の通常のプログラミングスタイルのままプログラムが
  108. 組めるようになる特殊なライブラリです。このライブラリを使っている限りにおいて
  109. は、Ko-Window プログラミング上使える、使えない、の判定は必ずしも当てはまりま
  110. せん。<MT> のマークがついた部分は MiniTERM 使用時でも注意すべき項目として読
  111. んで下さい。
  112.  
  113.  
  114. ----
  115. 1995 11/16 初期公開版
  116.  
  117. 小笠原博之
  118. oga@dgw.yz.yamagata-u.ac.jp
  119. DenDenNET: DEN0006 COR.
  120.  
  121.